package com.nongtai.controller;

import com.nongtai.annotation.CountUV;
import com.nongtai.pojo.entity.Banner;
import com.nongtai.pojo.entity.GoodsHotRecommend;
import com.nongtai.pojo.entity.GoodsNewRecommend;
import com.nongtai.pojo.vo.GoodsHotRecommendVo;
import com.nongtai.pojo.vo.GoodsNewRecommendVo;
import com.nongtai.result.Result;
import com.nongtai.service.FrontDataService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * @author yza
 * @version 1.0
 * @date 2024/6/4 20:30
 */
@RestController
@Slf4j
public class FrontDataController {
    @Resource
    private FrontDataService frontDataService;

    /**
     * 首页轮播图数据
     * @return
     */
    @GetMapping("/home/banner")
    @CountUV(pageName = "home")
    public Result<List<Banner>> getHomeBanner(){
        List<Banner> banners = frontDataService.getBanners();
        return Result.success(banners);
    }

    /**
     * 获取新品推荐信息
     *
     * @return Result<List<GoodsNewRecommendVo>> 包含新品推荐数据的结果对象
     *
     * 本方法用于从前端数据服务中获取新品推荐数据，并将其转换为前端所需格式的VO对象列表。
     * 返回的结果包含一个列表，列表中的每个元素都是一个新品推荐的详细信息。
     */
    @GetMapping("/home/new")
    public Result<List<GoodsNewRecommendVo>> getGoodsNewRecommend(){
        // 查找新品
        List<GoodsNewRecommend> goodsNewRecommends = frontDataService.getGoodsNewRecommends();

        // 初始化VO对象列表用于存储转换后的数据
        List<GoodsNewRecommendVo> goodsNewRecommendVos = new ArrayList<>();
        // 遍历原始数据，将每个对象的属性复制到VO对象中，并添加到VO对象列表
        for(GoodsNewRecommend goodsNewRecommend : goodsNewRecommends){
            GoodsNewRecommendVo goodsNewRecommendVo = new GoodsNewRecommendVo();
            BeanUtils.copyProperties(goodsNewRecommend,goodsNewRecommendVo);
            goodsNewRecommendVos.add(goodsNewRecommendVo);
        }

        // 返回转换后的VO对象列表作为结果
        return Result.success(goodsNewRecommendVos);
    }

    /**
     * 获取人气推荐信息
     * @return
     */
    @GetMapping("/home/hot")
    public Result<List<GoodsHotRecommendVo>> getGoodsHotRecommend(){
        // 查找人气推荐商品
        List<GoodsHotRecommend> goodsHotRecommends = frontDataService.getGoodsHotRecommends();

        // 初始化VO对象列表用于存储转换后的数据
        List<GoodsHotRecommendVo> goodsHotRecommendVos = new ArrayList<>();
        // 遍历原始数据，将每个对象的属性复制到VO对象中，并添加到VO对象列表
        for(GoodsHotRecommend goodsHotRecommend : goodsHotRecommends){
            GoodsHotRecommendVo goodsHotRecommendVo = new GoodsHotRecommendVo();
            BeanUtils.copyProperties(goodsHotRecommend,goodsHotRecommendVo);
            goodsHotRecommendVos.add(goodsHotRecommendVo);
        }

        // 返回转换后的VO对象列表作为结果
        return Result.success(goodsHotRecommendVos);
    }

}
